using System;
using System.Configuration;
using System.Data;
using System.Text;
using System.Web.UI.WebControls;
using Anthem;
using App_Code;
using Common;
using MinCultura.Sipa.EntidadesArtes; using MinCultura.Sipa.DataAccess.EntidadesArtes;
using UsrControls;
using CheckBox = Anthem.CheckBox;
using CheckBoxList = Anthem.CheckBoxList;
using Label = Anthem.Label;
using RadioButtonList = Anthem.RadioButtonList;
using TextBox = Anthem.TextBox;

namespace web.Controls
{
	/// <summary>
	/// Summary description for AgentesBasicos.
	/// </summary>
	public class EntidadesInfraestructura : SinicUserControl
	{
		protected DropDownBase dplTIPO_ESPACIO;
		protected Label lblENT_NIVEL_BIEN_INTERES_CULTURAL;
		protected DropDownBase dplENT_NIVEL_BIEN_INTERES_CULTURAL;
		protected CheckBoxList chlESPACIOS_DISPONIBLES;
		protected CheckBox chkOTRO_ESPACIO;
		protected Label lblOTRO_ESPACIO;
		protected RadioButtonList opcACCESO_INTERNET;
		protected RadioButtonList opcBIEN_INTERES_CULTURAL;
		protected DropDownBase opcINFRAESTRUCTURA_DISCAPACITADOS;
		protected UsrControls.TextBoxBase txtOTRO_ESPACIO;

		#region - Eventos

		private void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				Manager.Register(this);

				StringBuilder strBien = new StringBuilder();
				strBien.Append(opcBIEN_INTERES_CULTURAL.ClientID + "_0,");
				strBien.Append(lblENT_NIVEL_BIEN_INTERES_CULTURAL.ClientID + ",");
				strBien.Append(dplENT_NIVEL_BIEN_INTERES_CULTURAL.ClientID);
				opcBIEN_INTERES_CULTURAL.Attributes.Add("OnClick", "return habilitarCamposSINO(" + strBien.ToString() + ");");

				StringBuilder strOtroEspacio = new StringBuilder();
				strOtroEspacio.Append(chkOTRO_ESPACIO.ClientID + ",");
				strOtroEspacio.Append(lblOTRO_ESPACIO.ClientID + ",");
				strOtroEspacio.Append(txtOTRO_ESPACIO.ClientID);
				chkOTRO_ESPACIO.Attributes.Add("OnClick", "return DisabledOtroEspacio(" + strOtroEspacio.ToString() + ");");
			}
		}

		#endregion 

		#region - Metodos 		

		public EntidadInfraestructuraData ObtenerDatos()
		{
			EntidadInfraestructuraData objData = new EntidadInfraestructuraData();
			DataRow fila = objData.NewRow();

			fila[EntidadInfraestructuraData.ENT_ID_FIELD] = this.Identificador;
			fila[EntidadInfraestructuraData.ENT_SINOACCESO_INTERNET_FIELD] = opcACCESO_INTERNET.SelectedValue;
			fila[EntidadInfraestructuraData.ENT_ESPACIO_FIELD] = dplTIPO_ESPACIO.SelectedValue;
			fila[EntidadInfraestructuraData.ENT_SINO_INFRAESTRUCTURA_DISCAPACITADOS_FIELD] = opcINFRAESTRUCTURA_DISCAPACITADOS.SelectedValue;
			fila[EntidadInfraestructuraData.ENT_SINO_BIEN_INTERES_CULTURAL_FIELD] = opcBIEN_INTERES_CULTURAL.SelectedValue;
			fila[EntidadInfraestructuraData.ENT_OTRO_ESPACIO_FIELD] = txtOTRO_ESPACIO.Text;

			if (opcBIEN_INTERES_CULTURAL.SelectedValue == "S")
				if (dplENT_NIVEL_BIEN_INTERES_CULTURAL.SelectedValue != "B")
					fila[EntidadInfraestructuraData.ENT_NIVEL_BIEN_INTERES_CULTURAL_FIELD] = dplENT_NIVEL_BIEN_INTERES_CULTURAL.SelectedValue;

			objData.addEntidadInfraestructura(fila);

			return objData;
		}

		public EspaciosEntidadData ObtenerDatosEspacios()
		{
			EspaciosEntidadData objDataEspaciosEntidad = new EspaciosEntidadData();
			DataRow filaEspaciosEntidad;

			foreach (ListItem Li in chlESPACIOS_DISPONIBLES.Items)
			{
				if (Li.Selected)
				{
					filaEspaciosEntidad = objDataEspaciosEntidad.NewRow();
					filaEspaciosEntidad[EspaciosEntidadData.ENT_ID_FIELD] = this.Identificador;
					filaEspaciosEntidad[EspaciosEntidadData.ESP_ID_FIELD] = Li.Value;
					objDataEspaciosEntidad.addEspaciosEntidad(filaEspaciosEntidad);
				}
			}

			return objDataEspaciosEntidad;
		}

		public void CreaEntorno(DataRow fila, EspaciosEntidadData objDataEspaciosEntidad)
		{
			CargarControles();

			this.Identificador = Convert.ToDecimal(fila[EntidadInfraestructuraData.ENT_ID_FIELD]);

			if (fila[EntidadInfraestructuraData.ENT_SINO_BIEN_INTERES_CULTURAL_FIELD] != DBNull.Value)
			{
				opcBIEN_INTERES_CULTURAL.SelectedValue = fila[EntidadInfraestructuraData.ENT_SINO_BIEN_INTERES_CULTURAL_FIELD].ToString();
				if (opcBIEN_INTERES_CULTURAL.SelectedValue == Utilidad.SI)
				{
					lblENT_NIVEL_BIEN_INTERES_CULTURAL.Enabled = true;
					dplENT_NIVEL_BIEN_INTERES_CULTURAL.Enabled = true;

					if (fila[EntidadInfraestructuraData.ENT_NIVEL_BIEN_INTERES_CULTURAL_FIELD] != DBNull.Value)
						dplENT_NIVEL_BIEN_INTERES_CULTURAL.SelectedValue = fila[EntidadInfraestructuraData.ENT_NIVEL_BIEN_INTERES_CULTURAL_FIELD].ToString();
					else
						dplENT_NIVEL_BIEN_INTERES_CULTURAL.SelectedValue = "B";
				}
			}

			if (fila[EntidadInfraestructuraData.ENT_SINO_INFRAESTRUCTURA_DISCAPACITADOS_FIELD] != DBNull.Value)
			{					
				opcINFRAESTRUCTURA_DISCAPACITADOS.SelectedValue = fila[EntidadInfraestructuraData.ENT_SINO_INFRAESTRUCTURA_DISCAPACITADOS_FIELD].ToString();
			}

			opcACCESO_INTERNET.SelectedValue = fila[EntidadInfraestructuraData.ENT_SINOACCESO_INTERNET_FIELD].ToString();

			if (fila[EntidadInfraestructuraData.ENT_ESPACIO_FIELD] != DBNull.Value)
			{
				dplTIPO_ESPACIO.SelectedValue = fila[EntidadInfraestructuraData.ENT_ESPACIO_FIELD].ToString();
			}

			txtOTRO_ESPACIO.Text = fila[EntidadInfraestructuraData.ENT_OTRO_ESPACIO_FIELD].ToString();

			chkOTRO_ESPACIO.Checked = (txtOTRO_ESPACIO.Text.Trim().Length > 0);
			lblOTRO_ESPACIO.Enabled = (txtOTRO_ESPACIO.Text.Trim().Length > 0);
			txtOTRO_ESPACIO.Enabled = (txtOTRO_ESPACIO.Text.Trim().Length > 0);

			if (objDataEspaciosEntidad != null)
			{
				foreach (DataRow dr in objDataEspaciosEntidad.Rows)
				{
					ListItem Li = chlESPACIOS_DISPONIBLES.Items.FindByValue(dr[EspaciosEntidadData.ESP_ID_FIELD].ToString());
					if (Li != null)
						Li.Selected = true;
				}
			}
		}

		public void CargarControles()
		{
			chlESPACIOS_DISPONIBLES.Items.Clear();
            Espacios objControlEspacios = new Espacios(ConfigurationManager.AppSettings["Conn"]);
			EspaciosData objDataEspacios = objControlEspacios.BuscarEspacios();
			if (objDataEspacios != null)
			{
				chlESPACIOS_DISPONIBLES.DataSource = objDataEspacios;
				chlESPACIOS_DISPONIBLES.DataMember = objDataEspacios.Tables[0].TableName;
				chlESPACIOS_DISPONIBLES.DataTextField = EspaciosData.ESP_NOMBRE_FIELD;
				chlESPACIOS_DISPONIBLES.DataValueField = EspaciosData.ESP_ID_FIELD;
				chlESPACIOS_DISPONIBLES.DataBind();
			}

			dplENT_NIVEL_BIEN_INTERES_CULTURAL.Items.Clear();
            NivelAdministracion objControlNivelAdmin = new NivelAdministracion(ConfigurationManager.AppSettings["Conn"]);
			NivelAdministracionData objDataNivelAdmin;
			objDataNivelAdmin = objControlNivelAdmin.BuscarNivelAdministracion();
			if (objDataNivelAdmin != null)
			{
				dplENT_NIVEL_BIEN_INTERES_CULTURAL.DataSource = objDataNivelAdmin;
				dplENT_NIVEL_BIEN_INTERES_CULTURAL.DataMember = objDataNivelAdmin.Tables[0].TableName;
				dplENT_NIVEL_BIEN_INTERES_CULTURAL.DataTextField = NivelAdministracionData.NIA_NOMBRE_FIELD;
				dplENT_NIVEL_BIEN_INTERES_CULTURAL.DataValueField = NivelAdministracionData.NIA_ID_FIELD;
				dplENT_NIVEL_BIEN_INTERES_CULTURAL.DataBind();				
			}
			dplENT_NIVEL_BIEN_INTERES_CULTURAL.Items.Add(new ListItem(string.Empty, "B"));
			
			dplTIPO_ESPACIO.Items.Clear();
            EspacioPrincipal objBR = new EspacioPrincipal(ConfigurationManager.AppSettings["Conn"]);
			dplTIPO_ESPACIO.Items.Clear();
			EspacioPrincipalData objData = new EspacioPrincipalData();
			objData = objBR.BuscarEspacioPrincipal();
			if (objData != null)
			{
				dplTIPO_ESPACIO.DataSource = objData;
				dplTIPO_ESPACIO.DataTextField = EspacioPrincipalData.EEP_NOMBRE_FIELD;
				dplTIPO_ESPACIO.DataValueField = EspacioPrincipalData.EEP_ID_FIELD;
				dplTIPO_ESPACIO.DataBind();
			}

			opcINFRAESTRUCTURA_DISCAPACITADOS.Items.Clear();
			opcINFRAESTRUCTURA_DISCAPACITADOS.Items.Add(new ListItem("SI",Utilidad.SI));
			opcINFRAESTRUCTURA_DISCAPACITADOS.Items.Add(new ListItem("NO",Utilidad.NO));
			opcINFRAESTRUCTURA_DISCAPACITADOS.Items.Add(new ListItem(string.Empty,"B"));
		}

		#endregion 

		#region - Propiedades

		public decimal Identificador
		{
			get
			{
				if (ViewState["Identificador"] != null)
					return ((decimal) ViewState["Identificador"]);
				else
					return (0);
			}
			set { ViewState["Identificador"] = decimal.Parse(value.ToString()); }
		}

		public EntidadInfraestructuraData EntidadInfraestructuraDataTable
		{
			get
			{
				EntidadInfraestructuraData dtEntidadInfraestructuraData = null;

				if (Cache[EntidadInfraestructuraData.ART_ENTIDAD_INFRAESTRUCTURA_TABLE+ Session.SessionID] != null)
				{
					dtEntidadInfraestructuraData =
						(EntidadInfraestructuraData) Cache[EntidadInfraestructuraData.ART_ENTIDAD_INFRAESTRUCTURA_TABLE + Session.SessionID];
				}

				return dtEntidadInfraestructuraData;
			}			
		}

		public EspaciosEntidadData EspaciosEntidadDataTable
		{
			get
			{
				EspaciosEntidadData dtEspaciosEntidadData = null;

				if (Cache[EspaciosEntidadData.ART_ESPACIOS_ENTIDAD_TABLE+ Session.SessionID] != null)
				{
					dtEspaciosEntidadData =
						(EspaciosEntidadData) Cache[EspaciosEntidadData.ART_ESPACIOS_ENTIDAD_TABLE + Session.SessionID];
				}

				return dtEspaciosEntidadData;
			}
		}

		public DataSet InfraestructuraData
		{
			get 
			{
				DataSet dsInfraestructura = new DataSet();
				dsInfraestructura.Tables.Add(ObtenerDatos());
				dsInfraestructura.Tables.Add(ObtenerDatosEspacios());				
				
				return dsInfraestructura;
			}
			set
			{
				if (value != null && value.Tables.Count > 0)
				{
					EntidadInfraestructuraData entidadInfraestructuraData = (EntidadInfraestructuraData)value.Tables[EntidadInfraestructuraData.ART_ENTIDAD_INFRAESTRUCTURA_TABLE];
					EspaciosEntidadData espaciosEntidadData = (EspaciosEntidadData)value.Tables[EspaciosEntidadData.ART_ESPACIOS_ENTIDAD_TABLE];					
					
					CreaEntorno(entidadInfraestructuraData.Rows[0],espaciosEntidadData);
				}
			}
		}

		#endregion 

		#region Web Form Designer generated code

		protected override void OnInit(EventArgs e)
		{
			InitializeComponent();
			base.OnInit(e);
		}

		private void InitializeComponent()
		{
			this.Load += new System.EventHandler(this.Page_Load);

		}

		#endregion
	}
}